package cn.aitrox.ry.service.anno.mapper;

import cn.aitrox.ry.service.anno.entity.AnnoResultEntity;
import cn.aitrox.ry.service.anno.po.anno.result.AnnoResultQueryParamPo;
import cn.aitrox.ry.service.anno.po.anno.result.SeriesAnnoCountCountPo;
import cn.aitrox.ry.service.anno.po.task.TaskAnnoCountInfoPo;
import cn.aitrox.ry.service.anno.po.task.TaskSeriesCountPo;
import com.github.abel533.mapper.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface AnnoResultMapper extends Mapper<AnnoResultEntity> {
    List<TaskAnnoCountInfoPo> findAnnoCountInfoByTaskIdsStatus(@Param("taskIds") List<Integer> taskIdList, @Param("statusArr") Integer[] status);

    List<TaskSeriesCountPo> findTaskSeriesCountByTaskIdsUserId(@Param("taskIds") List<Integer> taskIds, @Param("userId") Integer userId);

    List<SeriesAnnoCountCountPo> findSeriesAnnoCountCountByTaskIds(@Param("taskIds") List<Integer> taskIds);

    String findGetableGroupId(@Param("taskId") Integer taskId, @Param("userId") Integer userId, @Param("crossNum") Integer crossNum);

    List<AnnoResultEntity> findByTaskIdGroupIdUserIdNotGtZero(@Param("taskId") Integer taskId, @Param("groupId") String groupId);

    void batchInsert(@Param("list") List<AnnoResultEntity> list);

    Integer findGroupIdCountByTaskIdStatusUserIdGtZero(@Param("taskId") Integer taskId, @Param("statusArr")Integer[] statusArr);

    List<Integer> findUserIdsByTaskId(@Param("taskId") Integer taskId);

    List<AnnoResultEntity> query(AnnoResultQueryParamPo params);

    List<AnnoResultEntity> findByTaskIdsStatus(@Param("taskIds") List<Integer> taskIds, @Param("statusArr") Integer[] statusArr);

    List<String> findGroupIdByTaskIdUserId(@Param("taskId") Integer taskId, @Param("userId") Integer userId);

    List<AnnoResultEntity> findUserGroupByTaskIdUserIdGroupId(@Param("taskId") Integer taskId, @Param("userId") Integer userId, @Param("groupId") String groupId);

    List<AnnoResultEntity> findByTaskIdUserIdGroupIds(@Param("taskId") Integer taskId, @Param("userId") Integer userId, @Param("groupIds") List<String> groupIds);

    Integer findEnGetableGroupCount(@Param("taskId") Integer taskId, @Param("userId") Integer userId, @Param("crossNum") Integer crossNum);
}
